This invention relates to digital computers for executing I/O instructions, that occur in an application program which is foreign to the computer.
As background to the invention, FIG. 1 shows a conventional communications network 1 on which data is sent and received. This network 1 has multiple nodes to which respective digital computers are coupled. Four such nodes are indicated in FIG. 1 as Nodes J, K, L and M. Node J is coupled to a computer 10 which is comprised of an I/O processor 11, and x86 instruction processor 12, and a memory 13. Similarly, Node K is coupled to a computer 20 which is comprised of I/O processor 21, an A-Series instruction processor 22, and a memory 23.
Examples of the x86 instruction processor include the Intel 386 processor, the Intel 486 processor, the Intel Pentium processor, the Intel Merced processor, and any other processor which has a compatible set of object code instructions. Examples of the A-Series instruction processor include the Unisys A7 processor, the Unisys All processor, the Unisys A16 processor, and any other processor which has a compatible set of object code instructions.
Included in the memory 13 of the x86 instruction processor 12 is a native operating system 14 and multiple native application programs 15a-15n. This operating system 14 and all of the programs 15a-15n are native to the x86 instruction processor 12 because they are a compilation of object code instructions that are executed directly by the x86 instruction processor. One suitable operating system 14 is the NT operating system from Microsoft Corporation.
Similarly, included in the memory 23 of the A-Series instruction processor 22 is a native A-Series operating system 24 and multiple native application programs 25a through 25n. This operating system 24 and all of the programs 22a-25n are native to the A-Series instruction processor 22 because they are a compilation of the A-Series object code instructions which are executed directly by the A-Series instruction processor.
To send data on the communication network 1 from an A-Series application program 25i, the program includes a NETSEND instruction 26. This instruction 26 has a field 26a which specifies that data is to be sent on the network 1, a field 26b which identifies a node on the network to which the data is to be sent, and a field 26c which points to the data that is to be sent. Likewise, to receive data from the network 1 in the A-Series application program 25i, the program includes a NETRCV instruction 27. Instruction 27 includes a field 27a which specifies that program 25i is to receive data from the network, and a field 27b which points to a buffer area in the memory 23 for storing the received data.
An example of how the I/O instructions 26 and 27 are performed is shown in FIG. 2. There, the I/O processor 21 includes a programmable controller 21a and a network interface circuit 21b. Various tasks are performed within the programmable controller 21a by an IOP Control thread 21a-1, an IOP Send thread 21a-2, and an IOP Get thread 21a-3. By a thread is herein meant a single stream of instructions for execution.
When the I/O instruction 26 is to be executed, the A-Series operating system transmits a SEND I/O command to the programmable controller 21a where it is received by the IOP Control thread 21a-1 as indicated by reference numeral 31. Then the IOP Control thread passes the SEND I/O command to a Send thread 21a-2 as indicated by reference numeral 32. In response, the IOP Send thread sends and receives control signals 33 to/from the network interface circuit 21b that cause the data to be sent to the network 10. After the data is sent, the IOP Send thread 21a-2 generates a result descriptor RDES which indicates the status of the data transfer, and it sends the result descriptor to the A-Series operating system as indicated by reference numeral 34. By a Result descriptor is herein meant any predetermined set of bits that allow the status of an I/O operation to be described.
Similarly, when the I/O instruction 27 is to be executed, the A-Series operating system transmits a GET I/O command to the programmable controller 21a where it is received by the IOP Control thread 21a-1 as indicated by reference numeral 35. Then the IOP Control thread passes the GET I/O command to the IOP Get thread 21a-3 as indicated by reference numeral 36. In response the IOP Get thread sends and receives control signals 37 to/from the network interface circuit 21b that cause the data to be received from the network 1. After the data is received, the IOP Get thread 21a-2 generates a result descriptor RDES which indicates the status of the data transfer, and it sends the result descriptor to the A-Series operating system as indicated by reference numeral 38.
In the above described FIGS. 1 and 2, the A-Series operating system 24 and its application programs 25a-25n are not executed by emulation because they consist of A-Series object code instructions that are native to the A-Series instruction processor 22. By comparison, if the A-Series operating system and/or the application programs 25a-25n were being executed by emulation, then they would all be executed by a different instruction processor under the control of another operating system which is native to that instruction processor.
For example, program 15n in the x86 computer 10 could be an A-Series emulator which interprets and executes all instructions in the A-Series operating system 24 and all of the A-Series application programs 25a-25n; and this is shown in FIG. 3. In FIG. 3, the operating system 24 and all of its application programs 25a-25n still consist of A-Series object code instructions; and they are foreign to the x86 instruction processor 12.
Inspection of FIG. 3 shows that the A-Series operating system 24 no longer interfaces directly with an I/O processor. Instead in FIG. 3, the A-Series operating system 24 is separated from the I/O processor by the A-Series emulator and the NT operating system. This separation presents a problem when the I/O instructions 26 and 27 are executed because the A-Series operating system 24 cannot interact directly with the I/O processor as it previously did in FIG. 2.
Accordingly, a primary object of the present invention is to provide a digital computer for executing I/O instructions, by emulation, that occur in an application program which is foreign to the computer.